package MyXML;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.List;

public class demo {
    public static void main(String[] args) throws DocumentException {
        //先创建解析器
        SAXReader saxReader = new SAXReader();
        //通过解析器的read方法，将XML进行解析为Document
        Document document = saxReader.read("D:\\software\\code\\2023_java\\2023_java_code\\code_24_4_29\\src\\MyXML\\text2.xml");

        //根据document对象先获取根元素对象
        Element rootElement = document.getRootElement();
        System.out.println("输出的是根元素的名字"+rootElement.getName());

        //根据根元素再通过无参elements()方法获取全部子元素对象
        List<Element> elementList = rootElement.elements();


        //进行遍历输出
        System.out.println("遍历输出子元素名字");
        for (Element element : elementList) {
            System.out.println(element.getName());
        }
        System.out.println("===============");

        //根据根元素通过有参elements(String name)方法获取指定名字的子元素对象
        System.out.println("遍历指定的子元素对象，输出该子元素的名字");
        List<Element> elementList1 = rootElement.elements("user");
        for (Element element : elementList1) {
            System.out.println(element.getName());
        }
        System.out.println("===============");

        //获取指定的元素,如果有同名，将会获取第一个user的Element对象
        Element element = rootElement.element("user");
        //再获取该对象的全部的属性,并将其输出属性名与属性值
        List<Attribute> attributeList = element.attributes();
        for (Attribute attribute : attributeList) {
            System.out.println(attribute.getName() + " :" +attribute.getValue());
        }
        System.out.println("===============");

        //通过element元素来获取子元素的文本
        String name = element.elementText("name");
        String  age = element.elementText("age");
        String  address = element.elementText("地址");
        System.out.println(name + " ," + age + " ," + address);
        System.out.println("===============");

        //通过element获取下的子元素
        Element elementName = element.element("name");
        //再来输出文本
        String name1 = elementName.getText();
        System.out.println(name1);
    }
}
